﻿namespace Blaze.Editor.AssetValidators
{
    using Framework.Logging;
    using UnityEngine;
    using ILogger = Framework.Logging.ILogger;

    /// <summary>
    /// 资源校验抽象基类。
    /// </summary>
    public abstract class AssetValidator
    {
        /// <summary>
        /// 获取或设置资源校验过程中的日志记录器。
        /// </summary>
        public ILogger Logger
        {
            get
            {
                if (mLogger == null)
                    mLogger = new EmptyLogger();
                return mLogger;
            }
            set { mLogger = value; }
        }

        /// <summary>
        /// 检查指定资源是否满足校验规则。
        /// </summary>
        /// <param name="asset">资源</param>
        public abstract void Check(Object asset);

        /// <summary>
        /// 获取一个值，表示某个资源是否需要预处理，用于预校验，省去加载资源的开销。
        /// </summary>
        /// <param name="assetPath">资源路径</param>
        public abstract bool Precheck(string assetPath);

        private ILogger mLogger;
    }
}